
// java11, java17 没有javah命令, javah命令是java8的,
// 编译java源文件是需要java8的javac命令 (javac8o, 是我给Oracle JDK中的javac起的别名), 
// 也就是说必须使用同一个版本的javac和javah 
//
// 1. 编译:
//		javac8o Demo1.java
// 2. 生成头文件
//		javah -o Demo1.h Demo1
// 3. 创建一个Demo.cpp, 编写native函数的实现
// 4. 生成动态库
/* 
clang++ -dynamiclib \
-I$JAVA_HOME/include \
-I$JAVA_HOME/include/darwin \
-o libDemo1.jnilib \
Demo1.cpp
*/
// 5. 运行Java程序
// java8o Demo1
public class Demo1 {

	// 加载动态库 (动态库有native方法的类进行加载)
	static {
		// 加载动态库, 需要掐头 (去掉lib) 去尾 (去掉.jnilib)
		// macOS中生成的动态库名称为: libDemo1.jnilib
		System.loadLibrary("Demo1");
	}


	public native void hello();


	public static void main(String[] args) {
		new Demo1().hello();
	}
}
